package com.tedu.day02.oop;

/**
 * this关键字----super关键字---------使用完全一致
 * 不需要继承-----当前类，指代的当前
 * 使用方式：调用类的属性、方法、构造器
 *        this.属性         【给当前类的属性赋值】
 *                         出先构造方法中
 *                         区别当前类的属性参数“名称”一致
 *                     this.方法
 *                     this()        多个有参的构造器
 *
 * 笔试题：this和super的区别？
 *       this  主要调用本类的属性、方法、构造器
 *       super 调用父类的属性、方法、构造器  存在继承关系，使用super
 *       this()与super()
 *       this() 调用本类的其他构造器---构造器首行
 *       super()调用父类的其他构造器---子类的构造器首行
 *       问题：this()与super()可以同时出现在对象构造器中？
 *       回答：super、this 不允许同时出现在同一构造器中
 *
 *
 */
public class this关键字 {
    int i;  //属性----很少赋值【声明为赋值】-------构造器或方法中赋值
    int j;  //属性----很少赋值【声明为赋值】-------构造器或方法中赋值

    public this关键字(int i, int j) {
        this.i = i;
        this.j = j;
    }

    //构造器：有参    需求：创建1个参数对象，给i和j赋值【跟super一样】
    public this关键字(int i) {
        this(5,8);//调用本类其他有参构造器-----传参
        this.i = i;//常见： this.属性【当前类下属性】=参数
                   //赋值  this.i=1;
    }
    //方法---this.方法
    public void testI(){

        System.out.println("我是I");
    }
    public void testJ(){ //调取---输出：我是I   我是J
       this.testI();
        System.out.println("我是J");
    }

    public static void main(String[] args) {
        System.out.println(new this关键字(1).j);//属性没有输出语句
       // new this关键字(1).testJ(); //方法有输出语句
    }
}
